import Vue from 'vue';
import Vuex from 'vuex';

import { actions } from './actions.js';
import { mutations } from './mutations.js';
import { getters } from './getters.js';
import { state } from './state.js';

// vuex 自带的logger
import createLogger from 'vuex/dist/logger';

const logger = createLogger({
    collapsed: false, // 自动展开记录的 mutation
    filter (mutation, stateBefore, stateAfter) {
    // 若 mutation 需要被记录，就让它返回 true 即可
    // 顺便，`mutation` 是个 { type, payload } 对象
    return mutation.type !== "aBlacklistedMutation"
    },
    transformer (state) {
    // 在开始记录之前转换状态
    // 例如，只返回指定的子树
    return state.subTree
    },
    mutationTransformer (mutation) {
    // mutation 按照 { type, payload } 格式记录
    // 我们可以按任意方式格式化
    return mutation.type
    },
    logger: console, // 自定义 console 实现，默认为 `console`
})

Vue.use(Vuex);
// 这是判断是否是生产环境的  如果是生产环境就不打印logger
const debug = process.env_NODE_DEV !== 'production'

export default new Vuex.Store({
    actions,
    getters,
    state,
    mutations,
    plugins: debug ? [createLogger()] : []
})